Conversation
- Claude: haiku/sonnet/opus -> claude-haiku-4-5/claude-sonnet-4-6/claude-opus-4-6 - Gemini: gemini-3-flash/gemini-3-pro -> gemini-3-flash-preview/gemini-3-pro-preview/gemini-3.1-pro-preview - Codex: gpt-5.x-codex-* -> o4-mini/o3 - Copilot: claude-sonnet-4-5 -> claude-sonnet-4-6, remove stale claude-sonnet-4 - OpenCode: update top picks to match current model names
…pies (#232) Replace the brief "Consult Skill Integration" section with a comprehensive "External Tool Quick Reference" that documents safe command patterns, effort-to-model mappings, and output parsing for all five providers. Applied to: - plugins/debate/skills/debate/SKILL.md (canonical) - adapters/opencode/skills/debate/SKILL.md - adapters/codex/skills/debate/SKILL.md
…ts (#232) Add pointer lines after each Skill:consult invocation block directing the reader to the debate skill's External Tool Quick Reference section for command patterns, model mappings, and output parsing per provider. Applied to both canonical and opencode adapter orchestrator agents.
New describe block verifying all three debate skill copies contain: - External Tool Quick Reference section header - All five providers (claude, gemini, codex, opencode, copilot) - Effort-to-Model Mapping table - Output Parsing table - Canonical source note referencing the consult skill
…ll (#232) Apply the same model name updates from the canonical consult skill to the opencode adapter copy: - Claude: haiku/sonnet/opus -> claude-haiku-4-5/claude-sonnet-4-6/claude-opus-4-6 - Gemini: gemini-3-flash/gemini-3-pro -> gemini-3-flash-preview/gemini-3-pro-preview/gemini-3.1-pro-preview - Codex: gpt-5.x-codex-* -> o4-mini/o3 - Copilot: claude-sonnet-4-5 -> claude-sonnet-4-6 - OpenCode: update top picks to current model names
Add the quick reference section to the canonical debate command file so that the Codex adapter (generated from command) and OpenCode command adapter both get the section via gen-adapters.
…e, regenerate adapters
Summary of ChangesHello @avifenesh, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly enhances the clarity and maintainability of tool integration within the debate and consult skills. By introducing a centralized quick reference for external tools, it streamlines how agents understand and interact with different providers, reducing redundancy and improving operational efficiency. Concurrently, it updates model names to ensure consistency and accuracy with current provider offerings, reflecting a commitment to up-to-date system configurations. Highlights
Changelog
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
The pull request successfully adds the 'External Tool Quick Reference' section to the debate skill and its adapters, providing a useful reference for command patterns and model mappings. It also correctly updates the provider model names in the consult skill, ensuring alignment with current offerings. However, the new test cases in debate-command.test.js are missing verification for the updated Gemini models, which were a key part of the PR's intent. I have provided suggestions to improve test coverage for these models.
| }); | ||
|
|
||
| test('current model names present in effort-to-model mapping of each skill copy', () => { | ||
| const expectedModels = ['claude-haiku-4-5', 'claude-sonnet-4-6', 'claude-opus-4-6', 'o4-mini', 'o3', 'gemini-2.5-flash']; |
There was a problem hiding this comment.
The expectedModels array is missing the updated Gemini preview models (gemini-3-flash-preview, gemini-3-pro-preview, gemini-3.1-pro-preview) which were added to the debate skill's quick reference table. Including them ensures that the test verifies the full set of current models.
| const expectedModels = ['claude-haiku-4-5', 'claude-sonnet-4-6', 'claude-opus-4-6', 'o4-mini', 'o3', 'gemini-2.5-flash']; | |
| const expectedModels = ['claude-haiku-4-5', 'claude-sonnet-4-6', 'claude-opus-4-6', 'o4-mini', 'o3', 'gemini-2.5-flash', 'gemini-3-flash-preview', 'gemini-3-pro-preview', 'gemini-3.1-pro-preview']; |
| describe('consult skill opencode adapter sync (#232)', () => { | ||
| test('opencode consult adapter contains all 5 providers', () => { | ||
| for (const provider of ['claude', 'gemini', 'codex', 'opencode', 'copilot']) { | ||
| expect(openCodeConsultSkillContent.toLowerCase()).toContain(provider); | ||
| } | ||
| }); | ||
|
|
||
| test('opencode consult adapter has updated claude model names', () => { | ||
| expect(openCodeConsultSkillContent).toContain('claude-haiku-4-5'); | ||
| expect(openCodeConsultSkillContent).toContain('claude-sonnet-4-6'); | ||
| expect(openCodeConsultSkillContent).toContain('claude-opus-4-6'); | ||
| }); | ||
|
|
||
| test('opencode consult adapter has updated codex model names (no speculative gpt-5.x)', () => { | ||
| expect(openCodeConsultSkillContent).not.toContain('gpt-5.3-codex'); | ||
| expect(openCodeConsultSkillContent).not.toContain('gpt-5.2-codex'); | ||
| expect(openCodeConsultSkillContent).toContain('o4-mini'); | ||
| expect(openCodeConsultSkillContent).toContain('o3'); | ||
| }); | ||
|
|
||
| test('canonical consult skill has updated model names', () => { | ||
| expect(consultSkillContent).toContain('claude-haiku-4-5'); | ||
| expect(consultSkillContent).toContain('claude-sonnet-4-6'); | ||
| expect(consultSkillContent).toContain('claude-opus-4-6'); | ||
| expect(consultSkillContent).not.toContain('gpt-5.3-codex'); | ||
| expect(consultSkillContent).toContain('o4-mini'); | ||
| expect(consultSkillContent).toContain('o3'); | ||
| }); | ||
| }); |
There was a problem hiding this comment.
Section 15 of the tests verifies the consult skill adapter sync but completely omits the Gemini model updates mentioned in the PR description. Adding assertions for the new Gemini preview models will ensure that both the OpenCode adapter and the canonical consult skill are correctly updated.
describe('consult skill opencode adapter sync (#232)', () => {
test('opencode consult adapter contains all 5 providers', () => {
for (const provider of ['claude', 'gemini', 'codex', 'opencode', 'copilot']) {
expect(openCodeConsultSkillContent.toLowerCase()).toContain(provider);
}
});
test('opencode consult adapter has updated claude model names', () => {
expect(openCodeConsultSkillContent).toContain('claude-haiku-4-5');
expect(openCodeConsultSkillContent).toContain('claude-sonnet-4-6');
expect(openCodeConsultSkillContent).toContain('claude-opus-4-6');
});
test('opencode consult adapter has updated gemini model names', () => {
expect(openCodeConsultSkillContent).toContain('gemini-3-flash-preview');
expect(openCodeConsultSkillContent).toContain('gemini-3-pro-preview');
expect(openCodeConsultSkillContent).toContain('gemini-3.1-pro-preview');
});
test('opencode consult adapter has updated codex model names (no speculative gpt-5.x)', () => {
expect(openCodeConsultSkillContent).not.toContain('gpt-5.3-codex');
expect(openCodeConsultSkillContent).not.toContain('gpt-5.2-codex');
expect(openCodeConsultSkillContent).toContain('o4-mini');
expect(openCodeConsultSkillContent).toContain('o3');
});
test('canonical consult skill has updated model names', () => {
expect(consultSkillContent).toContain('claude-haiku-4-5');
expect(consultSkillContent).toContain('claude-sonnet-4-6');
expect(consultSkillContent).toContain('claude-opus-4-6');
expect(consultSkillContent).toContain('gemini-3-flash-preview');
expect(consultSkillContent).toContain('gemini-3-pro-preview');
expect(consultSkillContent).toContain('gemini-3.1-pro-preview');
expect(consultSkillContent).not.toContain('gpt-5.3-codex');
expect(consultSkillContent).toContain('o4-mini');
expect(consultSkillContent).toContain('o3');
});
});There was a problem hiding this comment.
Pull request overview
Adds an “External Tool Quick Reference” to the debate documentation (canonical + adapters) and updates consult-provider model naming references so agents can quickly plan tool usage without re-reading the full consult skill.
Changes:
- Added an External Tool Quick Reference section (safe command patterns, effort→model mapping, output parsing) to debate skill/docs across canonical and adapter copies.
- Updated consult skill provider model names (Claude/Gemini/Codex) and synced the OpenCode consult adapter copy.
- Updated README/CHANGELOG and added tests validating quick reference presence and partial consult-model sync.
Reviewed changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| plugins/debate/skills/debate/SKILL.md | Adds External Tool Quick Reference section to canonical debate skill. |
| plugins/debate/commands/debate.md | Adds External Tool Quick Reference section to debate command docs. |
| plugins/debate/agents/debate-orchestrator.md | Adds pointer to the new quick reference section for planning. |
| plugins/consult/skills/consult/SKILL.md | Updates provider model-name documentation (Claude/Gemini/Codex) and examples. |
| adapters/opencode/skills/debate/SKILL.md | Mirrors the new quick reference section in the OpenCode debate skill adapter. |
| adapters/opencode/skills/consult/SKILL.md | Syncs OpenCode consult adapter model-name documentation with canonical consult skill. |
| adapters/opencode/commands/debate.md | Mirrors the new quick reference section in the OpenCode debate command adapter. |
| adapters/opencode/agents/debate-orchestrator.md | Adds quick reference pointer note in OpenCode debate orchestrator adapter. |
| adapters/codex/skills/debate/SKILL.md | Mirrors the new quick reference section in the Codex debate skill adapter. |
| tests/debate-command.test.js | Adds tests for quick reference presence and (partial) consult adapter model-name sync. |
| README.md | Updates consult “default model” table to new model names. |
| CHANGELOG.md | Documents the new quick reference section and consult model-name updates. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| |----------|---------------------| | ||
| | Claude | `claude -p - --output-format json --model "MODEL" --max-turns TURNS --allowedTools "Read,Glob,Grep" < "{AI_STATE_DIR}/consult/question.tmp"` | | ||
| | Gemini | `gemini -p - --output-format json -m "MODEL" < "{AI_STATE_DIR}/consult/question.tmp"` | | ||
| | Codex | `codex exec "$(cat "{AI_STATE_DIR}/consult/question.tmp")" --json -m "MODEL" -c model_reasoning_effort="LEVEL"` | |
There was a problem hiding this comment.
The Codex safe command pattern uses nested unescaped double quotes inside a double-quoted command substitution ("$(cat "{AI_STATE_DIR}/...")"), which is not valid shell syntax. Update the pattern to avoid nested unescaped quotes (e.g., use single quotes around the temp-file path or escape inner quotes) and keep it consistent with the canonical consult skill table.
| | Codex | `codex exec "$(cat "{AI_STATE_DIR}/consult/question.tmp")" --json -m "MODEL" -c model_reasoning_effort="LEVEL"` | | |
| | Codex | `codex exec "$(cat '{AI_STATE_DIR}/consult/question.tmp')" --json -m "MODEL" -c model_reasoning_effort="LEVEL"` | |
| |----------|---------------------| | ||
| | Claude | `claude -p - --output-format json --model "MODEL" --max-turns TURNS --allowedTools "Read,Glob,Grep" < "{AI_STATE_DIR}/consult/question.tmp"` | | ||
| | Gemini | `gemini -p - --output-format json -m "MODEL" < "{AI_STATE_DIR}/consult/question.tmp"` | | ||
| | Codex | `codex exec "$(cat "{AI_STATE_DIR}/consult/question.tmp")" --json -m "MODEL" -c model_reasoning_effort="LEVEL"` | |
There was a problem hiding this comment.
The Codex safe command pattern contains nested unescaped double quotes inside a double-quoted command substitution, which makes the example invalid if copied. Adjust the quoting (e.g., single-quote the temp-file path or escape inner quotes) and ensure it matches the canonical consult skill safe-pattern table.
| | Codex | `codex exec "$(cat "{AI_STATE_DIR}/consult/question.tmp")" --json -m "MODEL" -c model_reasoning_effort="LEVEL"` | | |
| | Codex | `codex exec "$(cat '{AI_STATE_DIR}/consult/question.tmp')" --json -m "MODEL" -c model_reasoning_effort="LEVEL"` | |
| |----------|---------------------| | ||
| | Claude | `claude -p - --output-format json --model "MODEL" --max-turns TURNS --allowedTools "Read,Glob,Grep" < "{AI_STATE_DIR}/consult/question.tmp"` | | ||
| | Gemini | `gemini -p - --output-format json -m "MODEL" < "{AI_STATE_DIR}/consult/question.tmp"` | | ||
| | Codex | `codex exec "$(cat "{AI_STATE_DIR}/consult/question.tmp")" --json -m "MODEL" -c model_reasoning_effort="LEVEL"` | |
There was a problem hiding this comment.
The Codex safe command pattern example has invalid shell quoting due to nested unescaped double quotes around the temp-file path. Rewrite the example to avoid nested quotes (single quotes or escaped quotes) so the reference is syntactically correct.
| | Codex | `codex exec "$(cat "{AI_STATE_DIR}/consult/question.tmp")" --json -m "MODEL" -c model_reasoning_effort="LEVEL"` | | |
| | Codex | `codex exec "$(cat '{AI_STATE_DIR}/consult/question.tmp')" --json -m "MODEL" -c model_reasoning_effort="LEVEL"` | |
| |----------|---------------------| | ||
| | Claude | `claude -p - --output-format json --model "MODEL" --max-turns TURNS --allowedTools "Read,Glob,Grep" < "{AI_STATE_DIR}/consult/question.tmp"` | | ||
| | Gemini | `gemini -p - --output-format json -m "MODEL" < "{AI_STATE_DIR}/consult/question.tmp"` | | ||
| | Codex | `codex exec "$(cat "{AI_STATE_DIR}/consult/question.tmp")" --json -m "MODEL" -c model_reasoning_effort="LEVEL"` | |
There was a problem hiding this comment.
The Codex safe command pattern is not valid shell as written because it includes nested unescaped double quotes inside a double-quoted command substitution. Please fix the quoting so the example can be copied safely.
| | Codex | `codex exec "$(cat "{AI_STATE_DIR}/consult/question.tmp")" --json -m "MODEL" -c model_reasoning_effort="LEVEL"` | | |
| | Codex | `codex exec "$(cat \"{AI_STATE_DIR}/consult/question.tmp\")" --json -m "MODEL" -c model_reasoning_effort="LEVEL"` | |
| |----------|---------------------| | ||
| | Claude | `claude -p - --output-format json --model "MODEL" --max-turns TURNS --allowedTools "Read,Glob,Grep" < "{AI_STATE_DIR}/consult/question.tmp"` | | ||
| | Gemini | `gemini -p - --output-format json -m "MODEL" < "{AI_STATE_DIR}/consult/question.tmp"` | | ||
| | Codex | `codex exec "$(cat "{AI_STATE_DIR}/consult/question.tmp")" --json -m "MODEL" -c model_reasoning_effort="LEVEL"` | |
There was a problem hiding this comment.
The Codex safe command pattern uses nested unescaped double quotes ("$(cat "{AI_STATE_DIR}/...")"), which breaks shell parsing. Update the quoting (e.g., single-quote the file path or escape inner quotes) to make the reference command syntactically valid.
| | Codex | `codex exec "$(cat "{AI_STATE_DIR}/consult/question.tmp")" --json -m "MODEL" -c model_reasoning_effort="LEVEL"` | | |
| | Codex | `codex exec "$(cat '{AI_STATE_DIR}/consult/question.tmp')" --json -m "MODEL" -c model_reasoning_effort="LEVEL"` | |
|
|
||
| - **`/debate` command inline orchestration** — The `/debate` command now manages the full debate workflow directly (parse → resolve → execute → verdict), following the `/consult` pattern. The `debate-orchestrator` agent is now the programmatic entry point for other agents/workflows that need to spawn a debate via `Task()`. Fixes issue #231. | ||
|
|
||
| - **`/debate` External Tool Quick Reference** — Added a "External Tool Quick Reference" section to all copies of the debate skill (`plugins/debate/skills/debate/SKILL.md`, OpenCode and Codex adapters) with safe command patterns, effort-to-model mapping tables, and output parsing expressions. The section includes a canonical-source pointer to `plugins/consult/skills/consult/SKILL.md` so the debate orchestrator doesn't duplicate provider logic. Added pointer notes in `debate-orchestrator` agents. Fixes issue #232. |
There was a problem hiding this comment.
Grammar: use “an External Tool Quick Reference section” (External starts with a vowel sound).
| - **`/debate` External Tool Quick Reference** — Added a "External Tool Quick Reference" section to all copies of the debate skill (`plugins/debate/skills/debate/SKILL.md`, OpenCode and Codex adapters) with safe command patterns, effort-to-model mapping tables, and output parsing expressions. The section includes a canonical-source pointer to `plugins/consult/skills/consult/SKILL.md` so the debate orchestrator doesn't duplicate provider logic. Added pointer notes in `debate-orchestrator` agents. Fixes issue #232. | |
| - **`/debate` External Tool Quick Reference** — Added an "External Tool Quick Reference" section to all copies of the debate skill (`plugins/debate/skills/debate/SKILL.md`, OpenCode and Codex adapters) with safe command patterns, effort-to-model mapping tables, and output parsing expressions. The section includes a canonical-source pointer to `plugins/consult/skills/consult/SKILL.md` so the debate orchestrator doesn't duplicate provider logic. Added pointer notes in `debate-orchestrator` agents. Fixes issue #232. |
| test('canonical consult skill has updated model names', () => { | ||
| expect(consultSkillContent).toContain('claude-haiku-4-5'); | ||
| expect(consultSkillContent).toContain('claude-sonnet-4-6'); | ||
| expect(consultSkillContent).toContain('claude-opus-4-6'); | ||
| expect(consultSkillContent).not.toContain('gpt-5.3-codex'); | ||
| expect(consultSkillContent).toContain('o4-mini'); | ||
| expect(consultSkillContent).toContain('o3'); | ||
| }); |
There was a problem hiding this comment.
The new “consult skill adapter sync” tests only validate the OpenCode adapter + canonical consult skill. The Codex adapter consult skill still contains stale model names (e.g., gpt-5.3-codex in adapters/codex/skills/consult/SKILL.md), so the repo can remain inconsistent while these tests pass. Consider updating the Codex adapter consult docs (and/or extending this test to cover it) to ensure the model-name update is applied consistently across platforms.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6238094caa
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| ``` | ||
|
|
||
| Models: haiku, sonnet, opus | ||
| Models: claude-haiku-4-5, claude-sonnet-4-6, claude-opus-4-6 |
There was a problem hiding this comment.
Update saved-session model example to renamed Claude IDs
This change switches Claude defaults to fully qualified model IDs (claude-*), but the same skill still documents writing "model": "opus" in last-session.json and then reusing that saved model on --continue (see the state-file schema and load-session steps). That leaves contradictory instructions in one prompt and can make resumed consultations use stale model names instead of the newly documented defaults, especially when the agent follows the schema literally.
Useful? React with 👍 / 👎.
Summary
claude-haiku-4-5,claude-sonnet-4-6,claude-opus-4-6), Gemini (gemini-3-flash-preview,gemini-3-pro-preview,gemini-3.1-pro-preview), Codex (o4-mini,o3replacing speculativegpt-5.x-codexnames)debate-command.test.js) covering the quick reference content across all 3 platform copies and the consult adapter model name syncTest Plan
npm test— 98 suites, 0 failures)gpt-5.x-codexreferences,o4-mini/o3present/enhancerun on modified skills and agentsRelated Issues
Closes #232